/**
 * @file   Io.java
 * @author Enrique Madrid <e.madrid@lpcsite.com>
 * @date   Tue Jul 31 17:25:04 2007
 *
 * Clase base abstracta para Entrada/Salida.
 *
 *
 */

package sim.framework.io;

import sim.framework.Simlet;

/**
 * Clase base abstracta para Entrada/Salida.
 *
 *
 * @author Enrique J. Madrid M.
 * @version %I%, %I%
 * @since 1.0
 * @see File
 * @see FileStream
 */
public abstract class Io {

    // Simlet (Utilizado para morir elegantemente)
    protected Simlet m_Simlet;
    
    protected boolean m_Eof;
    protected boolean m_Err;
    
    // Operaciones sincronizadas entre Hebras
    protected static final byte OPER_NONE = 0;
    protected static final byte OPER_OPEN = 1;
    protected static final byte OPER_CLOSE = 2;
    protected static final byte OPER_TRUNCATE = 3;
    protected static final byte OPER_WRITE = 4;
    protected static final byte OPER_READ = 5;
    protected static final byte OPER_SEEK = 6;
    protected static final byte OPER_CACHE = 7;
    protected static final byte OPER_FLUSH = 8;
    
    
    // Valores devueltos por operaciones nativas.
    public static final byte EOF = 0; // ANSI C
    public static final byte ERR = -1; // ANSI C
    
    public Io() {
    }
    
    /**
     * Determina si el flujo de entrada ha llegado al final.
     *
     *
     * @return Devuelve true si se ha llegado al final, en caso contrario
     *         devuelve false.
     */
    public final boolean eof() {
        return m_Eof;
    }
    
    /**
     *  Determina si hubo un error en el flujo.
     *
     *
     * @return Devuelve true si hubo error en el flujo, en caso contrario
     *         devuelve false.
     */
    public final boolean err() {
        return m_Err;
    }
}
